GdkWindowWayland: draw, then damage, then commit
authorOwen W. Taylor <otaylor@fishsoup.net>
Tue, 23 Apr 2013 18:39:48 +0000 (14:39 -0400)
committerOwen W. Taylor <otaylor@fishsoup.net>
Thu, 25 Apr 2013 17:45:06 +0000 (13:45 -0400)
When exposing an area, we were individually damaging and committing
each rectangle, *before* drawing. Surprisingly, this almost worked.
Order things right and only commit once.

https://bugzilla.gnome.org/show_bug.cgi?id=698864

gdk/wayland/gdkwindow-wayland.c

index a04915e161745131da795bf99b62f036b9d1664a..d8d35c2e13cc6269011e68a7d0470068e914f0a0 100644 (file)
@@ -1626,16 +1626,17 @@ gdk_wayland_window_process_updates_recurse (GdkWindow      *window,
   if (impl->cairo_surface)
     gdk_wayland_window_attach_image (window);
 
+  _gdk_window_process_updates_recurse (window, region);
+
   n = cairo_region_num_rectangles(region);
   for (i = 0; i < n; i++)
     {
       cairo_region_get_rectangle (region, i, &rect);
       wl_surface_damage (impl->surface,
                          rect.x, rect.y, rect.width, rect.height);
-      wl_surface_commit(impl->surface);
     }
 
-  _gdk_window_process_updates_recurse (window, region);
+  wl_surface_commit (impl->surface);
 }
 
 static void